# -*- coding:utf-8 -*-
import sys
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtCore import Qt
from PySide6.QtGui import QIcon
from PySide6.QtWidgets import (QApplication, QMainWindow, QStackedLayout, QWidget,
                             QToolBar, QToolButton, QStyle, QColorDialog, QFontDialog,
                             QVBoxLayout, QGroupBox, QRadioButton)


class DemoStackedLayout(QMainWindow):
    def __init__(self, parent=None):
        super(DemoStackedLayout, self).__init__(parent)

        # 设置窗口标题
        self.setWindowTitle('实战PyQt5: QStackedLayout Demo!')
        # 设置窗口大小
        self.resize(480, 360)

        self.initUi()

    def initUi(self):
        toolBar = QToolBar(self)
        self.addToolBar(Qt.LeftToolBarArea, toolBar)

        btnColor = self.createButton('颜色对话框')
        btnColor.clicked.connect(lambda: self.onButtonClicked(0))
        toolBar.addWidget(btnColor)
        btnFont = self.createButton('字体对话框')
        btnFont.clicked.connect(lambda: self.onButtonClicked(1))
        toolBar.addWidget(btnFont)
        btnUser = self.createButton('分组部件')
        btnUser.clicked.connect(lambda: self.onButtonClicked(2))
        toolBar.addWidget(btnUser)

        mainWidget = QWidget(self)

        self.mainLayout = QStackedLayout(mainWidget)

        # 添加三个widget,演示三个页面之间的切换

        # 颜色对话框
        self.mainLayout.addWidget(QColorDialog(self))
        # 字体对话框
        self.mainLayout.addWidget(QFontDialog(self))
        # 自定义控件
        self.mainLayout.addWidget(self.createExclusiveGroup())

        mainWidget.setLayout(self.mainLayout)
        # 设置中心窗口
        self.setCentralWidget(mainWidget)

    def createButton(self, text):
        icon = QApplication.style().standardIcon(QStyle.SP_DesktopIcon)
        btn = QToolButton(self)
        btn.setText(text)
        btn.setIcon(icon)
        btn.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)

        return btn

    def onButtonClicked(self, index):
        if index < self.mainLayout.count():
            self.mainLayout.setCurrentIndex(index)

    def createExclusiveGroup(self):
        groupBox = QGroupBox('Exclusive Radio Buttons', self)

        radio1 = QRadioButton('&Radio Button 1', self)
        radio1.setChecked(True)
        radio2 = QRadioButton('R&adio button 2', self)
        radio3 = QRadioButton('Ra&dio button 3', self)

        vLayout = QVBoxLayout(groupBox)
        vLayout.addWidget(radio1)
        vLayout.addWidget(radio2)
        vLayout.addWidget(radio3)
        vLayout.addStretch(1)

        groupBox.setLayout(vLayout)

        return groupBox


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoStackedLayout()
    window.show()
    sys.exit(app.exec())